#include "StringContain.h"

using namespace std;

bool IsChildString(string str1, string str2)
{  

	// 开辟一个辅助数组并清零  
	int hash[26] = {0};  

	// num为辅助数组中元素个数  
	int num = 0;  

	// 扫描短字符串  
	for (size_t j = 0; j < str2.length(); j++)
	{  
		// 将字符转换成对应辅助数组中的索引  
		int index = str1[j] - 'A';  

		// 如果辅助数组中该索引对应元素为0，则置1，且num++;  
		if (hash[index] == 0)  
		{  
			hash[index] = 1;  
			num++;  
		}  
	}  

	// 扫描长字符串  
	for (size_t k = 0; k < str1.length(); k++)
	{  
		int index = str1[k] - 'A';  

		// 如果辅助数组中该索引对应元素为1，则num--;为零的话，不作处理（不写语句）。  
		if(hash[index] ==1)  
		{  
			hash[index] = 0;  
			num--;  
			if(num
					==
					0)
				//m==0，即退出循环。  
				break;  
		}  
	}  

	// num为0说明长字符串包含短字符串内所有字符  
	if (num == 0)  
	{
		cout << "true" << endl;  
		return true;
	}
	else  
	{
		cout << "false" << endl;  
		return false;
	}
}  
